.text
.align 8
.section .rodata
.LC0:
    .string "Month %2d has %2d days.\n"

.text
.align 4
.globl main
.type main, @function
main:
    pushq %rbp
    movq %rsp, %rbp

    // gcc生成的代码中，这里是减80字节，不知道规则是什么，感觉很浪费内存
    subq $64, %rsp
    // days -48(%rbp)
    // index -52(%rbp)
    movl $31, -48(%rbp)
    movl $28, -44(%rbp)
    movl $31, -40(%rbp)
    movl $30, -36(%rbp)
    movl $31, -32(%rbp)
    movl $30, -28(%rbp)
    movl $31, -24(%rbp)
    movl $31, -20(%rbp)
    movl $30, -16(%rbp)
    movl $31, -12(%rbp)
    movl $30, -8(%rbp)
    movl $31, -4(%rbp)

    movl $0, -52(%rbp) /* index */
    jmp .L2
.L1:
    movl -52(%rbp) /* index */, %eax
    movl %eax, %esi
    inc %esi
    cltq
    // 这里用%eax会报错
    // 必须用16位寄存器，我猜的
    movl -48(%rbp, %rax, 4), %edx
    leaq .LC0(%rip), %rdi
    movl $0, %eax
    call printf
    incl -52(%rbp)
.L2:
    movl -52(%rbp) /* index */, %eax
    cmp $12, %eax
    jl .L1

    movl $0, %eax
    movq %rbp, %rsp
    popq %rbp
    ret